class Solution {
public:
    void helper(Node* root, vector<int>& res){
        if(root == nullptr){  //nullptr是空指针，因为左边的root也是Node类型的指针，假如root只是个变量则可以root == null
            return; //此处的结束只是foreach里某次调用的结束，后面会继续遍历children中的下一个ch并调用helper
        }
        res.emplace_back(root->val); //前序遍历，顺序是根左右，即先访问根节点，再依次访问每个孩子节点
        for(Node* ch : root->children){ //n叉树的孩子也是个向量，要遍历
            helper(ch, res);
        }
    }

    vector<int> preorder(Node* root) {
        vector<int> res;
        helper(root, res); //要善于利用函数，参数设置靠经验
        return res;
    }
};